package com.gitee.cnlongs.cnlongmq.server.threads;

import java.util.Date;
import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.gitee.cnlongdb.basic.enums.sysnc.LongdbDataSyncEnms;
import com.gitee.cnlongs.cnlongmq.basic.entitiy.request.CnLongMessageQueue;
import com.gitee.cnlongs.cnlongmq.basic.entitiy.request.CnLongRequest;
import com.gitee.cnlongs.cnlongmq.basic.enums.CnLongMqStatus;
import com.gitee.cnlongs.cnlongmq.server.LongMqServer;

/**
 * 系统名称：SequeueHeartBeatHandler
 * 模块名称：
 * 模块描述：队列信息-心跳检测响应工具类
 * 功能列表：
 * 模块作者：zouyong
 * 开发时间：2019年7月30日 下午2:08:21
 * 模块路径：com.gitee.cnlongs.cnlongmq.server.threads.SequeueHeartBeatHandler
 */
public class SequeueHeartBeatHandler {

	private static final Logger logger = (Logger) LoggerFactory.getLogger(SequeueHeartBeatHandler.class);
	
	/**
	 * 功能描述：接收心跳检测请求
	 × 模块作者：ZOUYONG
	 × 开发时间：2019年7月30日 下午2:16:46
	 × 返回数据：String
	 */
	public static String receiveHeartBeatRequest(CnLongRequest request) {
		try {
			// 更新队列心跳信息（更新发起的心跳检测请求方的ip和端口的队列）
			List<CnLongMessageQueue> sequeueList = 
					LongMqServer.getExecuter().getLongMqConfig().getAppRelationSequeueList();
			for (CnLongMessageQueue queue : sequeueList) {
				if(queue.getLongMqIp().equals(request.getIp()) && 
						queue.getLongMqPort().equals(request.getPort())) {
					queue.setLongMqStatus(CnLongMqStatus.active.name());
					queue.setStopDate(null);
					queue.setHeartBeatData(new Date());
					queue.setHeartbeatConnectNumber(0);
				}
			}
		}
		catch(Exception e) {
			logger.error("接收心跳检测请求，更新队列活动状态异常：{}", e.getMessage());
		}
		return LongdbDataSyncEnms.success.name();
	}
	
}
